﻿using Abp.Dependency;
using DotNetCore.CAP;
using EasyCaching.Core.Internal;
using Hicap.QRCodeWarehouse.Core.Models.DbSet;
using Hicap.QRCodeWarehouse.Core.Models.Transfer;
using System;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;

namespace Hicap.QRCodeWarehouse.Core.Managers
{
    public interface IGenerationTaskManager :
        IManagerBase<GenerationTask>,
        IEasyCaching,
        ITransientDependency,
        ICapSubscribe
    {
        Task<GenerationTask> StartTask(int taskId);

        Task<ActionResult> DispatchCodeGenFeedback(TaskFeedbackDto data);

        Task PutTimedTask(GenerationTask input);

        Task SwitchActive(int taskId, bool isActive);

        new IQueryable<GenerationTask> GetQuery(Expression<Func<GenerationTask, bool>> predicate);

        void FinalFeedBackMessage(ActionResult result);
    }
}